﻿using System;
using System.Xml;
using System.Collections.Generic;
using System.Text;

using Weazel.Gezel.Model;

namespace Weazel.Gezel.Exporter
{
  internal class RegisterExporter
  {
    internal static void ToXml(XmlDocument xmlDoc, XmlElement parent, Register register)
    {
      XmlElement registertElement = xmlDoc.CreateElement("Register");

      // name attribute
      XmlAttribute nameAttribute = xmlDoc.CreateAttribute("name");
      nameAttribute.Value = register.LocalName;
      registertElement.Attributes.Append(nameAttribute);

      // id attribute
      XmlAttribute idAttribute = xmlDoc.CreateAttribute("id");
      idAttribute.Value = register.Name;
      registertElement.Attributes.Append(idAttribute);

      // type attribute
      XmlAttribute typeAttribute = xmlDoc.CreateAttribute("type");
      typeAttribute.Value = register.Signed ? "signed" : "unsigned";
      registertElement.Attributes.Append(typeAttribute);

      // width attribute
      XmlAttribute widthAttribute = xmlDoc.CreateAttribute("width");
      widthAttribute.Value = register.Width.ToString();
      registertElement.Attributes.Append(widthAttribute);

      parent.AppendChild(registertElement);
    }

    internal static void ToGezel(System.CodeDom.Compiler.IndentedTextWriter textWriter, Register register)
    {
      textWriter.WriteLine("reg {0} : {1}({2});", register.LocalName, register.Signed ? "tc" : "ns", register.Width);
    }
  }
}
